The present disclosure relates generally to the field of computer graphic rendering. The disclosure more specifically relates to point primitive rendering of computer graphics.
General purpose computer graphics equipment has evolved greatly over the past few decades. High-performance graphics accelerator hardware is commonplace in personal computers. These hardware devices, and the software applications that run on the hardware, are conventionally based on the OpenGL, and DirectX graphics standards. Both of these standards define functionality that is used to render polygon, line, and point primitives. Furthermore, these standards define various anti-aliasing schemes that can improve overall image quality. For example, one of the more commonly used anti-aliasing schemes is called “multi-sampling”. Multi-sampling divides each pixel into a set of smaller quanta called samples or sub-pixels. Rather than simply rendering the scene at the pixel level, multi-sampling renders at the sub-pixel level and then applies a filter to blend the sub-pixels together, yielding the final anti-aliased pixel color.
For point primitive rendering, the standards generally define two basic modes: jaggy and anti-aliased. When rendering jaggy points, each pixel determines if the point touches the pixel or not. If the pixel does touch the point the pixel is colored the point color, otherwise the point is discarded for that pixel. Jaggy point rendering may be simple and straightforward, but the resulting image quality is generally not acceptable for applications where point size and behavior on the display screen is important. For example, flight simulators used for pilot training may represent the individual lights along the edge of a runway. Lights at the near end of the runway should appear larger and brighter than those in the distance. Anti-aliased point rendering typically yields better results than jaggy rendering, but still falls short of the quality and brightness desired for pilot training.
In early days of flight simulation, custom built visual systems were conventionally used for pilot training. Calligraphic display devices where used because of their ability to display bright, crisp, and well behaved light points. Rather than paint the light points within a standard raster structure, the points were drawn one point at a time by steering the display's electron gun directly to where the light point should appear on the screen. This produced very high quality light point rendering, especially of night scenes. Such systems have been used for pilot training for several decades and many calligraphic systems have received FAA certification for commercial pilot training.
Calligraphic display devices and custom graphics hardware for driving a calligraphic display are typically costly to develop and produce. Modern computer based graphics devices are now readily available, along with industry standard raster-scan display devices, at a much lower price point. However, the commercially available graphics devices based on OpenGL and DirectX do not render point primitives at the same quality as the former calligraphic solutions. Obtaining bright light point rendering that is free from distracting artifacts is crucial to effective pilot training.
What is needed is a system and method for rendering point primitives that provide some of the characteristics of the older calligraphic solutions while using lower-cost raster display devices. There is also a need for a system and method for rendering bright and sharp point primitives without twinkle or scintillation as they move on the screen. What is also needed is a system and method that allows the point primitive to dynamically change size on screen without distracting artifacts by growing or decreasing its change in total brightness energy gradually and gracefully. What is also needed is a system and method that avoids scintillation when moving on the screen by maintaining constant energy for each point primitive. Preferably, the anti-aliasing method employed ensures that the point is displayed with the same total brightness energy regardless of where it lies on the pixels within the raster structure.